--------------------------------------------
FPS Mod
Basic Documentation
by TheEpigoni
--------------------------------------------


--------------------------------------------
Section 1: Basics
--------------------------------------------

Okay there are very few things you actually need to know to play which is sort 
of a good thing, that is it would be if the FPSControl program was perfect, too bad it's not. 
StonedStoopid didn't quite finish the thing so everyone once in a while it won't find the memory 
location but we'll get to that later. 

Let's start with the basics. 

1) Open the map, press test map (or run it from inside warcraft) then as it opens up and 
everything loads alt+tab and run the control program. 

2) Once that opens up press the Find Memory Locations button, it will take some time 
but it will usually find the memory location and once it does it will display it in the window. 

3) Then simply go back to the game, press tab in game then use WASD and the mouse 
to run around till your heart explodes from joy, or boredom. 

4) Also note, left click is fire, right click is jump. 

5) Now comes option B. What happens if the control program doesn't find the memory location. 
In this case you will need a program called tsearch which you can get here http://os2.tucows.com/preview/48262.html 
This handy program basically does the same type of searching that the control program does but better. 

6) What you're going to do is then open up tsearch, press the big "Open Process" button, select war3.exe from the 
list, then press the small spy glass and search for "999999" as an Exact Value of 4 bytes. 

7) Once it finds about 4 or 5 locations, the first one should be the one your looking for. 

8) Type in that memory location into the window at the bottom of the control program, and press Set Addr. 

9) Then continue on as if the program just found the memory location the conventional way.

Sounds fun doesn't it? Well I can't really help you if this is too complicated but you can beg stoned to fix it...although I don't think he'll appreciate all the attention, 
who knows he might do it. (I sound spiteful, but I'm really not, Stoned did alot and I respect him for it).


--------------------------------------------
Section 2: Making your own map
--------------------------------------------

Okay there are a few things you need to know before you make your own map, and simply speaking that is 
making your own height map of that map and then designating which unit is the FPSUnit. The second part is 
simple so we'll start with that first. In the trigger editor at the very bottom of the Initialize Variables trigger 
there's some text that looks like this:

Set FPSunit[1] = Marine 0000 <gen>

Change that to whatever unit you want to be the fps unit. Simple right?

Now the hard part, once you've made your map and checked your list twice...err yeah. Once you've done that 
and finalized your terrain (anything except terrain can change without requiring a new height map) simply save 
your map and exit out of the editor. Once outside of the editor you will need an MPQ Extractor/Viewer whatever 
and extract the war3Map.w3e file that lies within the map file. Then use the attached W3EReader.exe program, 
(open it and browse for the w3e then click the button), to create a text file called variables.txt. Now all you have 
to do is open up this file and use the important looking contents within to replace the code that is already in the 
Initialize Height Variables trigger. It should look very similar so I doubt it will be hard to figure out which part to 
replace. Then, if you've exported and imported the triggers properly. Voila, it will work.


--------------------------------------------
Section 3: Currently implemented play options
--------------------------------------------

Otherwise known as, "What you can do." The rundown is simple, I'll start with the ingame stuff all of which is
contained in the "Console" section of triggers for you to look at, you have a few basic inputs to play around 
with and here they are:

/fpv		Changes to first person view
/tpv		Changes to third person view
/stop		Instantly stops the players movement
/walk		Changes accel/vel physics to emulate walking
/hover		Changes accel/vel physics to emulate a hover vehicle
/FF #		Change the maximum slope up which a player can walk (an old debug never removed)
/weapon #	Changes weapons (Weapon two is the machine gun and the only useful weapon) (Weapon one was supposed to be a pistol but I removed the timing system because it didn't work, and weapon 3 was supposed to be the grenade which I never finished)


Now the slightly more in depth stuff, the variables (some of which are changed by the above text inputs) are 
really what interface with the engine. These are simply global variables that can be changed by hand or in 
game using triggers to alter the engine's internal workings, here is a rundown of all the variables that you 
can change. If any are not listed here, don't fuck with them.

StopSlope	Changed by /FF, described therein
VelMax		Max Velocity the player can go
XYAccel		Acceleration that is applied when pressing foreward backwards or either side button
XYFriction	Friction applied when moving
ZAccel		Gravity
ZFriction	Ammount of friction the ground applies to you when you go up or down a hill(Disabled, but still in the code)
ZFrictionFactor	A factor that the seperate x and y based zfrictions are multiplied by (Sounds confusing, is probably useless, just look at the code to see what it does) (Disabled, but still in the code)


And once again, we go even deeper, although I pride myself on having very few of these, there are a few places where 
you actually need to change numbers within the code itself to change the engine.

- Anything within the fire trigger. There was supposed to be a seperate trigger for each weapon which is why this works. 
This will be explained in detail in another section.

- In the movements trigger, the first If statement is to determine if the jump button is pressed, there it sets ZVel to 
10 if the button is pressed, that is the jump speed attained when you press the jump button, for a bigger jump, increase that number.

- Anything in the "Camera" category triggers can be changed to alter the camera view.

- Anything in the "Multiboards" category and the custom script section (multiboard triggers) can be changed 
to achieve whatever results you want. (This code was made by KaTTaNa, All thanks goes to him.)

- In the CamZAdjust function at the very bottom of the custom script section there is some code where 
you will see GetHeight(...) + 100, 100 is the eye level of the camera.

--------------------------------------------
Copyright 2002-2004 The FPS Mod Team & Warcraft III Campaigns. 
All Rights Reserved. Warcraft III is the property of Blizzard Entertainment.
--------------------------------------------